# 编译器设置
CXX := g++
CXXFLAGS := -Wextra -std=c++11 -Iinclude

# 目录结构
SRC_DIR := src
BUILD_DIR := build
TARGET := server

# 源文件和对象文件
SRCS := $(wildcard $(SRC_DIR)/*.cc)
OBJS := $(patsubst $(SRC_DIR)/%.cc,$(BUILD_DIR)/%.o,$(SRCS))

# 默认目标
all: create_dirs $(TARGET)

# 创建构建目录
create_dirs:
	@mkdir -p $(BUILD_DIR)

# 链接可执行文件
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) $^ -o $@ -llog4cpp -lmysqlclient -lavcodec -lavformat -lavutil -lswresample -lswscale -lcurl
	# 编译源文件
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cc
	$(CXX) $(CXXFLAGS) -c $< -o $@ 

# 清理生成的文件
clean:
	rm -rf $(BUILD_DIR) $(TARGET)

# 安装到系统目录 (可选)
install: $(TARGET)
	cp $(TARGET) /usr/local/bin/
	mkdir -p /var/log/$(TARGET)/
	mkdir -p /etc/$(TARGET)/

.PHONY: all create_dirs clean install
